package jmine.tec.database.query.domain;

import java.math.BigDecimal;
import java.sql.Blob;
import java.sql.Clob;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import jmine.tec.persist.annotation.Alias;
import jmine.tec.persist.annotation.Constraint;

import org.hibernate.annotations.Type;

import bancosys.tec.component.Documentation;
import bancosys.tec.persist.bussobj.PersistableBusinessObject;
import bancosys.tec.utils.date.Date;
import bancosys.tec.utils.date.Time;
import bancosys.tec.utils.date.Timestamp;

/**
 * @author lundberg
 */
@Entity
@Table(name = "MANY_TYPES")
@Alias("MNYTYP")
@SequenceGenerator(name = "SEQ_MNYTYP", sequenceName = "SEQ_MNYTYP")
@Documentation("MANY_TYPES")
public class ManyTypes extends PersistableBusinessObject {

    private Long id;

    private Boolean booleanField;

    private Byte byteField;

    private Short shortField;

    private Integer integerField;

    private Long longField;

    private Float floatField;

    private Double doubleField;

    private BigDecimal bigDecimalField;

    private Character charField;

    private String stringField;

    private Date dateField;

    private Time timeField;

    private Timestamp timestampField;

    private Blob blobField;

    private Clob clobField;

    /**
     * @return the id
     */
    @Id
    @GeneratedValue(generator = "SEQ_MNYTYP")
    @Column(name = "COD_MANY_TYPE", nullable = false)
    @Documentation("COD_MANY_TYPE")
    public Long getId() {
        return this.id;
    }

    /**
     * @return the booleanField
     */
    @Constraint(suffix = "MOCK_JT_0")
    @Column(name = "BOOL_FIELD")
    @Documentation("BOOL_FIELD")
    public Boolean getBooleanField() {
        return this.booleanField;
    }

    /**
     * @return the byteField
     */
    @Column(name = "BYTE_FIELD")
    @Documentation("BYTE_FIELD")
    public Byte getByteField() {
        return this.byteField;
    }

    /**
     * @return the shortField
     */
    @Column(name = "SHORT_FIELD")
    @Documentation("SHORT_FIELD")
    public Short getShortField() {
        return this.shortField;
    }

    /**
     * @return the integerField
     */
    @Column(name = "INT_FIELD")
    @Documentation("INT_FIELD")
    public Integer getIntegerField() {
        return this.integerField;
    }

    /**
     * @return the longField
     */
    @Column(name = "LONG_FIELD")
    @Documentation("LONG_FIELD")
    public Long getLongField() {
        return this.longField;
    }

    /**
     * @return the floatField
     */
    @Column(name = "FLOAT_FIELD")
    @Documentation("FLOAT_FIELD")
    public Float getFloatField() {
        return this.floatField;
    }

    /**
     * @return the doubleField
     */
    @Column(name = "DOUBLE_FIELD")
    @Documentation("DOUBLE_FIELD")
    public Double getDoubleField() {
        return this.doubleField;
    }

    /**
     * @return the bigDecimalField
     */
    @Column(name = "BIG_DECIMAL_FIELD", precision = 20, scale = 5)
    @Documentation("BIG_DECIMAL_FIELD")
    public BigDecimal getBigDecimalField() {
        return this.bigDecimalField;
    }

    /**
     * @return the charField
     */
    @Column(name = "CHAR_FIELD")
    @Documentation("CHAR_FIELD")
    public Character getCharField() {
        return this.charField;
    }

    /**
     * @return the stringField
     */
    @Column(name = "STRING_FIELD", length = 40)
    @Documentation("STRING_FIELD")
    public String getStringField() {
        return this.stringField;
    }

    /**
     * @return the dateField
     */
    @Type(type = "bancosys.tec.persist.hibernate.type.DateType")
    @Column(name = "DATE_FIELD")
    @Documentation("DATE_FIELD")
    public Date getDateField() {
        return this.dateField;
    }

    /**
     * @return the timeField
     */
    @Type(type = "bancosys.tec.persist.hibernate.type.TimeType")
    @Column(name = "TIME_FIELD")
    @Documentation("TIME_FIELD")
    public Time getTimeField() {
        return this.timeField;
    }

    /**
     * @return the timestampField
     */
    @Type(type = "bancosys.tec.persist.hibernate.type.TimestampType")
    @Column(name = "TIMESTAMP_FIELD")
    @Documentation("TIMESTAMP_FIELD")
    public Timestamp getTimestampField() {
        return this.timestampField;
    }

    /**
     * @return the blobField
     */
    @Column(name = "BLOB_FIELD")
    @Documentation("BLOB_FIELD")
    public Blob getBlobField() {
        return this.blobField;
    }

    /**
     * @return the clobField
     */
    @Column(name = "CLOB_FIELD")
    @Documentation("CLOB_FIELD")
    public Clob getClobField() {
        return this.clobField;
    }

    /**
     * @param id the id to set
     */
    public void setId(Long id) {
        this.id = id;
    }

    /**
     * @param booleanField the booleanField to set
     */
    public void setBooleanField(Boolean booleanField) {
        this.booleanField = booleanField;
    }

    /**
     * @param byteField the byteField to set
     */
    public void setByteField(Byte byteField) {
        this.byteField = byteField;
    }

    /**
     * @param shortField the shortField to set
     */
    public void setShortField(Short shortField) {
        this.shortField = shortField;
    }

    /**
     * @param integerField the integerField to set
     */
    public void setIntegerField(Integer integerField) {
        this.integerField = integerField;
    }

    /**
     * @param longField the longField to set
     */
    public void setLongField(Long longField) {
        this.longField = longField;
    }

    /**
     * @param floatField the floatField to set
     */
    public void setFloatField(Float floatField) {
        this.floatField = floatField;
    }

    /**
     * @param doubleField the doubleField to set
     */
    public void setDoubleField(Double doubleField) {
        this.doubleField = doubleField;
    }

    /**
     * @param bigDecimalField the bigDecimalField to set
     */
    public void setBigDecimalField(BigDecimal bigDecimalField) {
        this.bigDecimalField = bigDecimalField;
    }

    /**
     * @param charField the charField to set
     */
    public void setCharField(Character charField) {
        this.charField = charField;
    }

    /**
     * @param stringField the stringField to set
     */
    public void setStringField(String stringField) {
        this.stringField = stringField;
    }

    /**
     * @param dateField the dateField to set
     */
    public void setDateField(Date dateField) {
        this.dateField = dateField;
    }

    /**
     * @param timeField the timeField to set
     */
    public void setTimeField(Time timeField) {
        this.timeField = timeField;
    }

    /**
     * @param timestampField the timestampField to set
     */
    public void setTimestampField(Timestamp timestampField) {
        this.timestampField = timestampField;
    }

    /**
     * @param blobField the blobField to set
     */
    public void setBlobField(Blob blobField) {
        this.blobField = blobField;
    }

    /**
     * @param clobField the clobField to set
     */
    public void setClobField(Clob clobField) {
        this.clobField = clobField;
    }
}
